using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using System.Linq;
using ToggleLanguage.Helper;
using System.Globalization;
using System.Collections;
using System.Collections.Generic;

namespace ToggleLanguage.Features.Feature1
{
    /// <summary>
    /// This class handles events raised during feature activation, deactivation, installation, uninstallation, and upgrade.
    /// </summary>
    /// <remarks>
    /// The GUID attached to this class may be used during packaging and should not be modified.
    /// </remarks>

    [Guid("967f79db-336b-4459-91b5-cbd5937fdc69")]
    public class Feature1EventReceiver : SPFeatureReceiver
    {
        // Uncomment the method below to handle the event raised after a feature has been activated.

        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            SPWeb web = properties.Feature.Parent as SPWeb;

            foreach (CultureInfo info in Utilities.GetLanguageWeb(web))
            {
                SPUserCustomAction action = web.UserCustomActions.Add();
                action.Location = "Microsoft.SharePoint.StandardMenu";
                action.Title = info.DisplayName;
                action.Url = "javascript:ToggleLanguage('" + info.Name + "')";
                action.RegistrationId = info.LCID+".SiteActionLanguage";
                action.Group = "SiteActions";
                action.Sequence = 12;
                action.Update();
            }
            

            

        }


        // Uncomment the method below to handle the event raised before a feature is deactivated.

        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            

            SPWeb web = properties.Feature.Parent as SPWeb;

            List<SPUserCustomAction> actions = web.UserCustomActions.Where(c => c.RegistrationId.EndsWith("SiteActionLanguage")).ToList();
            actions.ForEach(a => {

                web.UserCustomActions.FirstOrDefault(c => c.RegistrationId == a.RegistrationId).Delete();
            });

            web.Update();
        }


        // Uncomment the method below to handle the event raised after a feature has been installed.

        //public override void FeatureInstalled(SPFeatureReceiverProperties properties)
        //{
        //}


        // Uncomment the method below to handle the event raised before a feature is uninstalled.

        //public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
        //{
        //}

        // Uncomment the method below to handle the event raised when a feature is upgrading.

        //public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
        //{
        //}
    }
}
